export const getInputs = () => [[[1, 2, 3]], [[4, 3, 2, 1]], [[0]], [[1, 9]], [[9, 9, 9]]];

/**
 * **[66. 加一](https://leetcode.cn/problems/plus-one/)**
 *
 * 给定一个由 **整数** 组成的 **非空** 数组所表示的非负整数，在该数的基础上加一。
 *
 * 最高位数字存放在数组的首位， 数组中每个元素只存储**单个**数字。
 *
 * 你可以假设除了整数 0 之外，这个整数不会以零开头。
 *
 * @param digits
 * @returns
 */
export default function (digits: number[]): number[] {
	const result: number[] = [];

	const length = digits.length;
	const meta = digits[length - 1] + 1;

	let index = length - 2;
	// 进位 flag
	let flag: boolean = false;
	if (meta >= 10) {
		result.unshift(meta - 10);
		flag = true;
		for (; index >= 0; index--) {
			const item = flag ? digits[index] + 1 : digits[index];
			if (item < 10) {
				flag = false;
				result.unshift(item);
				index--;
				break;
			}

			result.unshift(item - 10);
			flag = true;
		}
	} else {
		result.unshift(meta);
	}

	while (index >= 0) {
		result.unshift(digits[index--]);
	}

	if (flag) result.unshift(1);

	return result;
}
